package com.fbinggun.fattribute.status;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fbinggun.fattribute.attribute.IAttribute;
import com.fbinggun.fattribute.util.AttributUtil;
import org.bukkit.plugin.Plugin;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Modifier {
    String key;
    String plugin;
    Map<IAttribute,Double> attribute = new HashMap<>();
    //
    public Modifier(String key, Plugin plugin, Map<IAttribute, Double> attribute) {
        this.key = key;
        this.plugin = plugin.getName();
        this.attribute = attribute;
    }

    public Modifier(String key, Plugin plugin, List<String> attribute) {
        this.key = key;
        this.plugin = plugin.getName();
        this.attribute = AttributUtil.getAttribut(attribute);
    }


    public String getKey() {
        return key;
    }

    protected String getPlugin() {
        return plugin;
    }

    public Map<IAttribute, Double> getAttribute() {
        return attribute;
    }

    public Modifier(JSONObject jsonObject){
        plugin=jsonObject.getString("Plugin");
        key=jsonObject.getString("Key");
        JSONArray list = jsonObject.getJSONArray("Attribute");
        List<String> l= list.toJavaList(String.class);
        if(l!=null){
           attribute= AttributUtil.getAttribut(l);
        }

    }
    public JSONObject toJson(){
        JSONObject json = new JSONObject();
        json.put("Plugin",plugin);
        json.put("Key",key);
        JSONArray array = new JSONArray();
        for(IAttribute attribute1:attribute.keySet()) {
            array.add(attribute1.getKey()+" "+attribute.get(attribute1));
        }
        json.put("Attribute",array);
        return json;
    }
}
